/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Banco.DAO;

import Banco.Classes.Arquivo;
import Banco.Classes.Turma;
import Banco.Conexao.conexao3G;
import java.sql.*;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.Date;
import java.util.ArrayList;

/**
 *
 * @author Jorge Dantas
 */
public class ArquivoDAO {

    private conexao3G conecta3g;

    /**
     * Construtor
     */
    public ArquivoDAO() {
        conecta3g = conexao3G.getConexao3G();
    }

//    /**
//     * Recupera um numero especifico de arquivos
//     * @param data inicial
//     * @param data final
//     * @return uma lista de arquivo em ordem decrescente com data de criação entre o intervalo passado no argumento
//     */
//    public LinkedList getBetweenDataArquivos(Date inicio, Date fim) {
//        LinkedList lista = new LinkedList();
//        //conecta3g.conecta();
//        try {
//            String tabela = "Arquivo";
//            String SQL_getBetweenArquivos = "SELECT idArquivo FROM " + tabela + " WHERE dataCriacao BETWEEN '" + inicio + "' AND '" + fim + "' ORDER BY dataCriacao DESC";
//           ResultSet rs3= conecta3g.executeSql(SQL_getBetweenArquivos);
//
//            while (rs3.next()) {
//
//                Arquivo arquivo = new Arquivo();
//
//                arquivo.setIdArquivo(rs3.getInt("idArquivo"));
//                lista.add(arquivo);
//            }
//        } catch (SQLException ex) {
//            Logger.getLogger(ArquivoDAO.class.getName()).log(Level.SEVERE, null, ex);
//        }
//        //conecta3g.desconecta();
//        return lista;
//    }
//
//    /**
//     * Recupera um numero especifico de arquivos
//     * @param o numero maximo de registros
//     * @param a turma que o arquivo pertence
//     * @return uma lista de arquivos com o numero de arquivos especificado em ordem decrescente pela data
//     */
//    public LinkedList getFirstArquivos(int inicio, int fim, Turma turma) {
//        LinkedList lista = new LinkedList();
//        String turma_periodo = turma.getPeriodo();
//        String turma_turma = turma.getTurma();
//        String turma_curso = turma.getCurso();
//        String turma_disciplina = turma.getDisciplina();
//        //conecta3g.conecta();
//        try {
//            String tabela = "Arquivo";
//            String SQL_getFirstArquivos = "SELECT * FROM " + tabela +
//                    " WHERE Turma_periodo = '" + turma_periodo +
//                    "'AND Turma_turma = '" + turma_turma +
//                    "'AND Turma_disciplina = '" + turma_disciplina +
//                    "'AND Turma_curso = '" + turma_curso + "'" +
//                    " ORDER BY dataCriacao DESC LIMIT " + inicio + "," + fim + "";
//
//           ResultSet rs3= conecta3g.executeSql(SQL_getFirstArquivos);
//
//            while (rs3.next()) {
//
//                Arquivo arquivo = new Arquivo();
//                arquivo.setIdArquivo(rs3.getInt("idArquivo"));
//                arquivo.setTurma_cursoFK(rs3.getString("Turma_curso"));
//                arquivo.setTurma_disciplinaFK(rs3.getString("Turma_disciplina"));
//                arquivo.setTurma_periodoFK(rs3.getString("Turma_periodo"));
//                arquivo.setTurma_turmaFK(rs3.getString("Turma_turma"));
//                arquivo.setUrl(rs3.getURL("url"));
//                arquivo.setNome(rs3.getString("nome"));
//                arquivo.setDataCriacao(rs3.getDate("dataCriacao"));
//                lista.add(arquivo);
//
//            }
//        } catch (SQLException ex) {
//            Logger.getLogger(ArquivoDAO.class.getName()).log(Level.SEVERE, null, ex);
//        }
//        //conecta3g.desconecta();
//        return lista;
//    }
    /**
     * Recupera um arquivo especifico.
     * @param idArquivo - Id do arquivo
     * @return Arquivo encontrado
     */
    public Arquivo getArquivo(int idArquivo) {

        Arquivo arquivo = new Arquivo();
        //conecta3g.conecta();
        try {
            String tabela = "arquivo";
            String SQL_getFirstArquivos = "SELECT * FROM " + tabela +
                    " WHERE idarquivo = '" + idArquivo + "'";


           ResultSet rs3= conecta3g.executeSql(SQL_getFirstArquivos);

            while (rs3.next()) {

                arquivo.setIdArquivo(rs3.getInt("idarquivo"));
                arquivo.setTurma_cursoFK(rs3.getString("turma_curso"));
                arquivo.setTurma_disciplinaFK(rs3.getString("turma_disciplina"));
                arquivo.setTurma_periodoFK(rs3.getString("turma_periodo"));
                arquivo.setTurma_turmaFK(rs3.getString("turma_turma"));
                arquivo.setUrl(rs3.getString("url"));
                arquivo.setNome(rs3.getString("nome"));
                arquivo.setDataCriacao(rs3.getDate("datacriacao"));

            }
        } catch (SQLException ex) {
            Logger.getLogger(ArquivoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        //conecta3g.desconecta();
        return arquivo;
    }

    /**
     * Recupera todos os arquivos da turma passada.
     * @param turma - Turma que contém os arquivos
     * @return Todos os arquivos da turma
     */
    public ArrayList<Arquivo> getTodosArquivosTurma(Turma turma) {
        ArrayList<Arquivo> lista = new ArrayList();
        String turma_periodo = turma.getPeriodo();
        String turma_turma = turma.getTurma();
        String turma_curso = turma.getCurso();
        String turma_disciplina = turma.getDisciplina();
        //conecta3g.conecta();
        try {
            String tabela = "arquivo";
            String SQL_getFirstArquivos = "SELECT * FROM " + tabela +
                    " WHERE turma_periodo = '" + turma_periodo +
                    "'AND turma_turma = '" + turma_turma +
                    "'AND turma_disciplina = '" + turma_disciplina +
                    "'AND turma_curso = '" + turma_curso + "' ORDER BY datacriacao DESC";

           ResultSet rs3= conecta3g.executeSql(SQL_getFirstArquivos);

            while (rs3.next()) {

                Arquivo arquivo = new Arquivo();
                arquivo.setIdArquivo(rs3.getInt("idarquivo"));
                arquivo.setTurma_cursoFK(rs3.getString("turma_curso"));
                arquivo.setTurma_disciplinaFK(rs3.getString("turma_disciplina"));
                arquivo.setTurma_periodoFK(rs3.getString("turma_periodo"));
                arquivo.setTurma_turmaFK(rs3.getString("turma_turma"));
                arquivo.setUrl(rs3.getString("url"));
                arquivo.setNome(rs3.getString("nome"));
                arquivo.setDataCriacao(rs3.getDate("datacriacao"));
                lista.add(arquivo);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ArquivoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        //conecta3g.desconecta();
        return lista;
    }

    /**
     * Adiciona um novo arquivo no banco de dados.
     * @param arquivo - Arquivo a ser inserido
     */
    public void inserirArquivo(Arquivo arquivo) {
        //conecta3g.conecta();
        String tabela = "arquivo";
        String SQL_inserirArquivo = "INSERT INTO " + tabela + " (turma_curso, turma_disciplina, turma_turma, turma_periodo, nome ,url, datacriacao) " + " VALUES ( '" + arquivo.getTurma_cursoFK() + " ','" + arquivo.getTurma_disciplinaFK() + "','" + arquivo.getTurma_turmaFK() + "','" + arquivo.getTurma_periodoFK() + "','" + arquivo.getNome() + "','" + arquivo.getUrl() + "','" + arquivo.getDataCriacao() + "')";
        conecta3g.execute(SQL_inserirArquivo);
        //conecta3g.desconecta();
    }
}
